package com.neusoft.classch76;

import java.util.Random;
import java.util.Scanner;

/*
 * 定义一个可容纳5个学生的学生类数组，
 * 使用随机数给该数组装入各系学生的对象，
 * 然后按如下格式输出数组中的信息：
 * 学号:XXXXXXXX 姓名：XXX 性别：X 年龄：XX 综合成绩：XX
 * 
 */
public class TestStudent {

	public static void main(String[] args) {
		test03();
	}

	// 随机输出的测试方法 效果如下：
	// 学号：201702800 姓名：zy 性别：male 年龄：20期中成绩27.0期末成绩78.0演讲成绩30.0写作成绩95.0 综合成绩：59.5
	// 学号：201701001 姓名：xxx 性别：male 年龄：20期中成绩10.0期末成绩64.0演讲成绩88.0 综合成绩：62.5
	// 学号：201702802 姓名：zy 性别：male 年龄：20期中成绩64.0期末成绩18.0演讲成绩88.0写作成绩76.0
	// 综合成绩：69.69999999999999
	// 学号：201702803 姓名：zy 性别：male 年龄：20期中成绩19.0期末成绩49.0演讲成绩84.0写作成绩40.0
	// 综合成绩：53.599999999999994
	// 学号：201702804 姓名：zy 性别：male 年龄：20期中成绩54.0期末成绩74.0演讲成绩30.0写作成绩90.0
	// 综合成绩：61.199999999999996
	// 学号：201701605 姓名：yy 性别：female 年龄：20期中成绩22.0期末成绩49.0操作能力59.0写作成绩0.0
	// 综合成绩：37.800000000000004
	// 学号：201702806 姓名：zy 性别：male 年龄：20期中成绩82.0期末成绩89.0演讲成绩95.0写作成绩48.0
	// 综合成绩：75.69999999999999
	// 学号：201701607 姓名：yy 性别：female 年龄：20期中成绩73.0期末成绩64.0操作能力73.0写作成绩32.0
	// 综合成绩：63.00000000000001
	// 学号：201702808 姓名：zy 性别：male 年龄：20期中成绩60.0期末成绩10.0演讲成绩35.0写作成绩37.0 综合成绩：35.7
	// 学号：201702809 姓名：zy 性别：male 年龄：20期中成绩81.0期末成绩3.0演讲成绩0.0写作成绩68.0 综合成绩：36.4
	private static void test03() {
		// 定义学生数组
		Student[] students = new Student[10];
		// scanner实例
		Scanner sc = new Scanner(System.in);
		// random实例
		Random rd = new Random();

		for (int i = 0; i < students.length; i++) {
			if (rd.nextInt(3) == 0) {
				students[i] = new EnglishStudent("xxx", ("2017" + "0100" + i), "male", 20, rd.nextInt(100),
						rd.nextInt(100), rd.nextInt(100));
			} else if (rd.nextInt(3) == 1) {
				students[i] = new ComputerStudent("yy", ("2017" + "0160" + i), "female", 20, rd.nextInt(100),
						rd.nextInt(100), rd.nextInt(100), rd.nextInt(100));
			} else {
				students[i] = new LiteratureStudent("zy", ("2017" + "0280" + i), "male", 20, rd.nextInt(100),
						rd.nextInt(100), rd.nextInt(100), rd.nextInt(100));
			}
		}

		for (int i = 0; i < students.length; i++) {
			students[i].printOverall();
		}
		//final方法可以继承
		EnglishStudent stu1 = new EnglishStudent();
		stu1.print();
	}

	private static void test02() {

		// 定义学生数组
		Student[] students = new Student[1];
		// scanner实例
		Scanner sc = new Scanner(System.in);
		// random实例
		Random rd = new Random();

		// 定义接收数据变量
		String name;
		String StuNo;
		String stuGender;
		int age;
		double midScore;
		double finalScore;
		double speechScore;
		double writingScore;
		double operationScore;

		// 循环初始化数组
		for (int i = 0; i < students.length; i++) {
			// 随机数为0 ，为英语系学生
			if (rd.nextInt(3) == 0) {
				System.out.println("请输入英语系学生姓名：");
				name = sc.next();
				System.out.println("学号：");
				StuNo = sc.next();
				System.out.println("性别：");
				stuGender = sc.next();
				System.out.println("年龄：");
				age = sc.nextInt();
				System.out.println("演讲成绩：");
				speechScore = sc.nextDouble();
				System.out.println("期中成绩：");
				midScore = sc.nextDouble();
				System.out.println("期末成绩：");
				finalScore = sc.nextDouble();

				students[i] = new EnglishStudent(name, StuNo, stuGender, age, midScore, finalScore, speechScore);
			} else if (rd.nextInt(3) == 1) {
				System.out.println("请输入计算机系学生姓名：");
				name = sc.next();
				System.out.println("学号：");
				StuNo = sc.next();
				System.out.println("性别：");
				stuGender = sc.next();
				System.out.println("年龄：");
				age = sc.nextInt();
				System.out.println("操作成绩：");
				operationScore = sc.nextDouble();
				System.out.println("英语写作成绩：");
				writingScore = sc.nextDouble();
				System.out.println("期中成绩：");
				midScore = sc.nextDouble();
				System.out.println("期末成绩：");
				finalScore = sc.nextDouble();

				students[i] = new ComputerStudent(name, StuNo, stuGender, age, midScore, finalScore, operationScore,
						writingScore);
			} else if (rd.nextInt(3) == 2) {
				System.out.println("请输入文学系学生姓名：");
				name = sc.next();
				System.out.println("学号：");
				StuNo = sc.next();
				System.out.println("性别：");
				stuGender = sc.next();
				System.out.println("年龄：");
				age = sc.nextInt();
				System.out.println("演讲成绩：");
				speechScore = sc.nextDouble();
				System.out.println("英语写作成绩：");
				writingScore = sc.nextDouble();
				System.out.println("期中成绩：");
				midScore = sc.nextDouble();
				System.out.println("期末成绩：");
				finalScore = sc.nextDouble();

				students[i] = new LiteratureStudent(name, StuNo, stuGender, age, midScore, finalScore, speechScore,
						writingScore);
			}
		}

		// 输出学生的信息
		for (int i = 0; i < students.length; i++) {
			students[i].printOverall();
		}

	}

	private static void test01() {
		// 如果在文学系里覆盖父类的overall属性，下面输出的overall为0
		// 不覆盖父类overall属性，能正常输出成绩
		Student stu0 = new LiteratureStudent("wangl", "2017010001", "male", 18, 90, 89, 76, 100);
		stu0.calculateOverall();
		double stu0Ov = stu0.getOverall();
		stu0.printOverall();
	}
}
